約 1,095,584 件
https://w.atwiki.jp/2ndanniver/pages/23.html
第10問から 第10問目の勇者が帰還したころ、公式がうpされた。 問題概要 公式がうp トップページに 「3つのファイルはここにある by 失踪者」 と書かれていた 第10問で見つかった3つのガムテ 【Z0P.jayro】 【Z0G.check】 【Z01.jack】 あんたがたの考え 上の3つのよくわからん文字列を公式URLの末尾に付けてアクセスしたところ http //missingman.yh.land.to/Z0P.jayro http //missingman.yh.land.to/Z0G.check http //missingman.yh.land.to/Z01.jack には、よくわからないファイル(らしきもの)が置かれていた 66 名前:愛のVIP戦士[] 投稿日:2007/02/26(月) 18 41 10.20 ID H/okO+6F0 http //www.vipper.org/vip451901.zip.html とりあえず結合 起動したら.NET framework2.0が必要って出た インスコしてくる このプログラムを実行すると 78 名前:愛のVIP戦士[] 投稿日:2007/02/26(月) 18 45 44.45 ID CiQUyrNr0 http //www.vipper.net/vip187128.jpg.html こんなの起動した ここからCD-ROMの出番。 ところでバイナリ結合の方法 480 名前:愛のVIP戦士[] 投稿日:2007/02/26(月) 20 21 59.75 ID H/okO+6F0 469 44 48 66 http //www.vector.co.jp/soft/win95/util/se043122.html 44 名前:愛のVIP戦士[] 投稿日:2007/02/26(月) 18 34 41.87 ID H/okO+6F0 ぱっと見た感じでは、 jack、check、jayroの順に接合でよさそうな感じだが 48 名前:愛のVIP戦士[] 投稿日:2007/02/26(月) 18 35 42.79 ID H/okO+6F0 実行ファイルの名前はsissou.exeのようだ 66 名前:愛のVIP戦士[] 投稿日:2007/02/26(月) 18 41 10.20 ID H/okO+6F0 http //www.vipper.org/vip451901.zip.html とりあえず結合 起動したら.NET framework2.0が必要って出た インスコしてくる
https://w.atwiki.jp/rffbl22/pages/94.html
Gribのバイナリ出力 Gribファイルのバイナリ出力には、wgribコマンドを用いる wgrib 入力gribファイル | grep " 入力gribファイルの変数名 " | wgrib -i -bin -nh 入力gribファイル -o 出力バイナリファイル JRA25/JCDAS anl_p出力用シェルスクリプト例(grib_anlp_bin.sh) #!/bin/bash #Intial settings------------------------ var=PRMSL #variable name (PRMSL, TMP, UGRD, VGRD, SPFH, HGT) year=2010 #year start_month=06 #start month end_month=06 #end month start_day=01 #start day end_day=31 #end day #--------------------------------------- for month in $(seq ${start_month} ${end_month}) do for day in $(seq ${start_day} ${end_day}) do for hour in 00 06 12 18 do if [ ${month} -le 09 ] ; then mm=0${month} else mm=${month} fi if [ ${day} -le 09 ] ; then dd=0${day} else dd=${day} fi infile=anl_p.${year}${mm}${dd}${hour} outfile=${var}${year}${mm}${dd}${hour}.bin num=`wgrib ${infile} | grep " ${var} " | wgrib -i -bin -nh ${infile} -o ${outfile} | wc -l` echo "Time="${year}/${mm}/${dd}/${hour}UTC ", Variable="${var} ", Layer num="${num} done done done 複数月に渡って出力する場合に、データがないと"could not open file "とエラー表示されるが、次のファイルに継続されるだけなので問題なし。 例えば5、6、7月というように出力すると6月は31日がないのでエラーが表示される。 NCEP/NCAR FNL
https://w.atwiki.jp/wadaisenryaku2/pages/598.html
目次 目次 バイナリ編集概要 セクタ構造 巨大なデータの差し替えは困難 セクタ構造2 ファイルインデックス 改造におけるインデックス利用 バイナリ編集概要 CDイメージをバイナリエディタで編集することで、ゲームデータの改変が可能。 改造コードでは実現が難しい、セーブデータだけでは保持されないデータの改造はもちろん、 大規模編集によるオリジナルデータの作成なども可能となる。 基本的な考えは改造コードと同じであり、 ファイルの位置、データの位置、値の役割を把握した上で、そこのデータを書き換えれば望みの結果を得られる。 しかし改造範囲が大規模になると、CD-ROM形式の特有のデータの並び方など、いくつか把握しておくべき論点が生じる。 セクタ構造 CDイメージをマウントし、エキスプローラ等で開くと、中の「実データ」を閲覧・抽出することができる。 この時のファイルAのデータ列の状態を以下とする。 ファイルA しかし、CDイメージそのものをバイナリエディタで開き、データAの部分に移動すると、 A1 仕切 A2 仕切 A3 仕切 A4 ・・・ このように、データAが一定単位ごとに別の「仕切りデータ」で分割されていることが分かる。 この時、A1、A2、A3・・・を結合していくとファイルAと一致する。 これがCD-ROM形式におけるセクタの構造である。 仕切りデータのサイズは304(130h)バイト +仕切られた実データの分割単位は2048(800h)バイト =これがセットで1セクタ、計2352(930h)バイトとなる。 以下は304バイトの仕切りデータの見本。実際にはセクタ毎のヘッダー、エラー訂正符号などの役割を担う。 XXにはランダムなデータが入るが、先頭と末尾に特徴的な00とFFの並びが現れるため、慣れれば見分けることができる。 XX XX XX XX 00 00 00 00 00 00 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX FF FF FF FF FF FF FF FF FF FF XX XX XX XX XX 仕切りデータそのものは全く解析できていないが、する必要も恐らくない。 少なくともこれまでの試行では、仕切りデータを弄ることなく改造データは上手く動いている。 巨大なデータの差し替えは困難 差し替えやデータ移動の量が多くなる場合は面倒な事になる。例えばファイルAを改造したファイルA をAの位置に組み込む場合、 A を2048バイトずつのA 1、A 2、A 3・・・に分割しつつ、A1、A2、A3の位置に正確にコピペしていく作業が必要だ。 例えばBGMデータも上記原理で理論上は差し替え可能だが、ファイルサイズが巨大で数千セクタにも及ぶため、 手動で分割コピペしていくのは非現実的だ。よって改造は小~中規模に抑えるのが無難である。 プログラムで上記処理を行うツールが作れるならそれが一番だが、できない人は苦労することになる。 (ちなみに筆者はキーマクロを利用した自動コピペ法を考えたことがある) 仕切りデータの構造を無視してA の実データ列を丸ごと貼り付けてしまうことも不可能ではない(SSFが読んでくれた事例もある)が、 少なくともCD-ROMセクタ構造は失われ、Windowsエキスプローラではフォルダごと読めなくなるし、 ゲーム内でも不測のエラーが起こる可能性は十分にあり、あまり推奨できる方法ではない。 セクタ構造2 以上のようにファイルの差し替えにあたっては面倒な方式だが、利点もある。 ファイルの先頭データは必ずセクタの先頭に来るという特徴がある。 つまり、仕切りデータに着目するとファイルの開始位置が特定しやすい。 よってセクタで区切られた空間(実ファイルデータに使える空間)は2048バイトの倍数になる。 実際のファイルサイズが2048の倍数に満たない場合、余りの領域は00で満たされる。 よって00の羅列に着目するとファイルの終端位置を見積もれる場合もある。 ・・・ An-1 仕切 An(終端) 余り(0000...) 仕切 B1 仕切 B2 ・・・ 次にCDイメージにおける一番初めのセクタの実データ位置だが、 実はアドレス0(冒頭)ではなく、アドレス10h(17バイト目~)である。 以下に鋼鉄のアドレス0~のデータを載せる。 00 FF FF FF FF FF FF FF FF FF FF 00 00 02 00 01 53 45 47 41 20 53 45 47 41 53 41 54 55 52 4E 20 53 45 47 41 20 45 4E 54 45 52 50 52 49 53 45 53 47 53 39 30 32 35 20 20 20 20 56 31 2E 30 30 30 31 39 39 35 30 38 32 34 43 44 2D 31 2F 31 20 20 4A 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4A 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 4F 52 4C 44 20 41 44 56 41 4E 43 45 44 20 44 41 49 53 45 4E 52 59 41 4B 55 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ~ 2行目(アドレス10h)~8行目「53 45 47 41 20 53 45 47 ~ 53 45 4E 52 59 41 4B 55」は ASCII形式で「SEGA SEGASATURN ~ WORLD ADVANCED DAISENRYAKU」を表すが、 その前の「00 FF FF FF FF FF FF FF FF FF FF 00 00 02 00 01」は先ほどの304バイトの仕切りデータの末尾16バイトに相当する。 つまり304バイトのうち、末尾16バイトは実はセクタのヘッダで、残りの288バイトはフッタということになる。 以上により、ファイルの実データは 10h+n×(2048+304) の位置にあると分かる。 これが次のファイルインデックスの話に繋がる。 ファイルインデックス アドレスB7D0~に移動すると、CDイメージ内のファイル名などが書かれたデータに遭遇する。 22 00 14 00 00 00 00 00 00 14 00 20 00 00 00 00 20 00 5F 08 18 0F 02 22 14 02 00 00 01 00 00 01 01 00 22 00 14 00 00 00 00 00 00 14 00 20 00 00 00 00 20 00 5F 08 18 0F 02 22 14 02 00 00 01 00 00 01 01 01 2E 00 31 00 00 00 00 00 00 31 14 1A 02 00 00 02 1A 14 5F 08 18 0F 02 22 14 00 00 00 01 00 00 01 0C 30 30 30 30 30 30 30 30 2E 42 49 4E 00 2C 00 23 8E 01 00 00 01 8E 23 00 C0 2F 00 00 2F C0 00 5F 08 18 0F 02 22 14 00 00 00 01 00 ~ 上記のうち冒頭のデータ(22 00 14 00~)は解説しづらいため、5行目途中の「2E 00 31 00 ~」から解説する。 結論から言えばこの「2E 00 31 00 ~」は「00000000.bin」を示すインデックスである。 2E: インデックス1件のデータサイズ。この場合は2Eの箇所から数えて46バイトでひとまとまり。 どうやら必ず2の倍数になっているらしい(後述) 00: 不明。多分特に意味のないクッションデータ。 31 00 00 00 00 00 00 31: 実データが格納されているセクタ番号。 リトルエンディアン4バイト(31 00 00 00)と、ビッグエンディアン4バイト(00 00 00 31)、 同じ値が両方の形式で格納されている。(エンディアンについてはWikipediaを参照) セクタ番号は16進で0から数えるため、31h+1=50番目のセクタを表す。先述の計算式により、 このファイルは 10h+31h×(2048+304)=アドレス1C240 以降にあるということになる。 14 1A 02 00 00 02 1A 14: 実データのファイルサイズ。 これもリトルエンディアン4バイトとビッグエンディアン4バイトで格納されている。 つまりこの場合は 21A14=137,748バイト。 5F 08 18 0F 02 22: 1バイトごとに年月日時分秒を表す。 作成日時と更新日時の区別はないため、エクスプローラ上では両方この日付時刻が表示される。 これをそのまま10進にすると(19)95/8/24 15 02 34である。 しかし実際は(日本では)これに+4時間した1995/8/24 19 02 34と表示される。 元データの15 02はUTC(世界標準時)でもないので、なぜこうなのかは良く分かっていない。 ※ なお、+4時間した結果日付が変わるようであれば繰り上げて表示される。 (例:作戦ファイル、FILM0000.CPK、日本時1995/8/16 2 46、元データは8/15 22 46) 14 00 00 00 01 00 00 01: 今のところ不明。ただしファイルでなくフォルダの場合は2バイト目が02に変化することは判明している。 0C:次に続くファイル名の文字数(データサイズ)つまり0C=12文字。 30 30 30 30 30 30 30 30 2E 42 49 4E:「00000000.bin」←ぴったり12文字 ASCII文字コード形式でファイル名を表す。ただしこのファイルは違うが、末尾になぜか「;1」(3B 31)が付く場合が殆どで、 その場合はファイル文字数も「;1」分までカウントされる(エクスプローラ上では「;1」は表示されない)。 00:多分ただのクッションデータ。ここまで46バイト、直後は次のインデックスになる。 なおこの00は無い場合がある。先述の通りインデックス1件のデータは必ず偶数になっている模様だが、 変動要因であるファイル名文字数自体は偶奇どちらもありうる。そこでこの00があるかないかで偶数に調整しているようだ。 改めて冒頭の「22 00 14 00~」を解析すると、 インデックスデータ量22バイト、セクタ番号14h(アドレスB7D0)、ファイルサイズ8,192バイト(4セクタ分)、 時刻(日本時)1995/8/24 19 02 34、続いて14 02 00 00 01 00 00 01(2バイト目が02なのでフォルダ属性を表す)、 ファイル名なし(ファイル名文字数は0ではなく1とされている) ※ 以上がなぜかほぼ2回繰り返されており、その後00000000.binのインデックスへと続く。 アドレスB7D0はこのファイルインデックスの冒頭と一致する。つまりこのCD-ROMの「ルートフォルダ」と推定される。 改造におけるインデックス利用 改造目的でインデックスを使うのであれば、 ・セクタ番号: 実データ格納アドレスを計算、あるいは参照セクタそのものを変えてしまう ・ファイルサイズ: 改造対象のファイルサイズを増やしたいときにここの値を変える などが重要になるだろう。 特にセクタ番号の情報は改造したいファイルの冒頭データをコピー → 検索だけでは限界がある場合に有効だ。 ただしファイルサイズを増やすのには上限がある(2048の倍数を超えると次のファイルのセクタ領域に行ってしまう) ので、より大規模な改造としては、CDイメージ全体の末尾にある大量の空白セクタを利用して、 ここに新たにファイルを書き込み、それをインデックスから参照させるといったこともできるかもしれない。 (あまり大きいファイルだと当面は困難ではあるが)
https://w.atwiki.jp/wadaisenryaku/pages/729.html
目次 目次 バイナリ編集概要 セクタ構造 巨大なデータの差し替えは困難 セクタ構造2 ファイルインデックス 改造におけるインデックス利用 バイナリ編集概要 CDイメージをバイナリエディタで編集することで、ゲームデータの改変が可能。 改造コードでは実現が難しい、セーブデータだけでは保持されないデータの改造はもちろん、 大規模編集によるオリジナルデータの作成なども可能となる。 基本的な考えは改造コードと同じであり、 ファイルの位置、データの位置、値の役割を把握した上で、そこのデータを書き換えれば望みの結果を得られる。 しかし改造範囲が大規模になると、CD-ROM形式の特有のデータの並び方など、いくつか把握しておくべき論点が生じる。 セクタ構造 CDイメージをマウントし、エキスプローラ等で開くと、中の「実データ」を閲覧・抽出することができる。 この時のファイルAのデータ列の状態を以下とする。 ファイルA しかし、CDイメージそのものをバイナリエディタで開き、データAの部分に移動すると、 A1 仕切 A2 仕切 A3 仕切 A4 ・・・ このように、データAが一定単位ごとに別の「仕切りデータ」で分割されていることが分かる。 この時、A1、A2、A3・・・を結合していくとファイルAと一致する。 これがCD-ROM形式におけるセクタの構造である。 仕切りデータのサイズは304(130h)バイト +仕切られた実データの分割単位は2048(800h)バイト =これがセットで1セクタ、計2352(930h)バイトとなる。 以下は304バイトの仕切りデータの見本。実際にはセクタ毎のヘッダー、エラー訂正符号などの役割を担う。 XXにはランダムなデータが入るが、先頭と末尾に特徴的な00とFFの並びが現れるため、慣れれば見分けることができる。 XX XX XX XX 00 00 00 00 00 00 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX FF FF FF FF FF FF FF FF FF FF XX XX XX XX XX 仕切りデータそのものは全く解析できていないが、する必要も恐らくない。 少なくともこれまでの試行では、仕切りデータを弄ることなく改造データは上手く動いている。 巨大なデータの差し替えは困難 差し替えやデータ移動の量が多くなる場合は面倒な事になる。例えばファイルAを改造したファイルA'をAの位置に組み込む場合、 A'を2048バイトずつのA'1、A'2、A'3・・・に分割しつつ、A1、A2、A3の位置に正確にコピペしていく作業が必要だ。 例えばBGMデータも上記原理で理論上は差し替え可能だが、ファイルサイズが巨大で数千セクタにも及ぶため、 手動で分割コピペしていくのは非現実的だ。よって改造は小~中規模に抑えるのが無難である。 プログラムで上記処理を行うツールが作れるならそれが一番だが、できない人は苦労することになる。 (ちなみに筆者はキーマクロを利用した自動コピペ法を考えたことがある) 仕切りデータの構造を無視してA'の実データ列を丸ごと貼り付けてしまうことも不可能ではない(SSFが読んでくれた事例もある)が、 少なくともCD-ROMセクタ構造は失われ、Windowsエキスプローラではフォルダごと読めなくなるし、 ゲーム内でも不測のエラーが起こる可能性は十分にあり、あまり推奨できる方法ではない。 セクタ構造2 以上のようにファイルの差し替えにあたっては面倒な方式だが、利点もある。 ファイルの先頭データは必ずセクタの先頭に来るという特徴がある。 つまり、仕切りデータに着目するとファイルの開始位置が特定しやすい。 よってセクタで区切られた空間(実ファイルデータに使える空間)は2048バイトの倍数になる。 実際のファイルサイズが2048の倍数に満たない場合、余りの領域は00で満たされる。 よって00の羅列に着目するとファイルの終端位置を見積もれる場合もある。 ・・・ An-1 仕切 An(終端) 余り(0000...) 仕切 B1 仕切 B2 ・・・ 次にCDイメージにおける一番初めのセクタの実データ位置だが、 実はアドレス0(冒頭)ではなく、アドレス10h(17バイト目~)である。 以下に鋼鉄のアドレス0~のデータを載せる。 00 FF FF FF FF FF FF FF FF FF FF 00 00 02 00 01 53 45 47 41 20 53 45 47 41 53 41 54 55 52 4E 20 53 45 47 41 20 45 4E 54 45 52 50 52 49 53 45 53 47 53 39 30 32 35 20 20 20 20 56 31 2E 30 30 30 31 39 39 35 30 38 32 34 43 44 2D 31 2F 31 20 20 4A 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4A 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 4F 52 4C 44 20 41 44 56 41 4E 43 45 44 20 44 41 49 53 45 4E 52 59 41 4B 55 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ~ 2行目(アドレス10h)~8行目「53 45 47 41 20 53 45 47 ~ 53 45 4E 52 59 41 4B 55」は ASCII形式で「SEGA SEGASATURN ~ WORLD ADVANCED DAISENRYAKU」を表すが、 その前の「00 FF FF FF FF FF FF FF FF FF FF 00 00 02 00 01」は先ほどの304バイトの仕切りデータの末尾16バイトに相当する。 つまり304バイトのうち、末尾16バイトは実はセクタのヘッダで、残りの288バイトはフッタということになる。 以上により、ファイルの実データは 10h+n×(2048+304) の位置にあると分かる。 これが次のファイルインデックスの話に繋がる。 ファイルインデックス アドレスB7D0~に移動すると、CDイメージ内のファイル名などが書かれたデータに遭遇する。 22 00 14 00 00 00 00 00 00 14 00 20 00 00 00 00 20 00 5F 08 18 0F 02 22 14 02 00 00 01 00 00 01 01 00 22 00 14 00 00 00 00 00 00 14 00 20 00 00 00 00 20 00 5F 08 18 0F 02 22 14 02 00 00 01 00 00 01 01 01 2E 00 31 00 00 00 00 00 00 31 14 1A 02 00 00 02 1A 14 5F 08 18 0F 02 22 14 00 00 00 01 00 00 01 0C 30 30 30 30 30 30 30 30 2E 42 49 4E 00 2C 00 23 8E 01 00 00 01 8E 23 00 C0 2F 00 00 2F C0 00 5F 08 18 0F 02 22 14 00 00 00 01 00 ~ 上記のうち冒頭のデータ(22 00 14 00~)は解説しづらいため、5行目途中の「2E 00 31 00 ~」から解説する。 結論から言えばこの「2E 00 31 00 ~」は「00000000.bin」を示すインデックスである。 2E: インデックス1件のデータサイズ。この場合は2Eの箇所から数えて46バイトでひとまとまり。 どうやら必ず2の倍数になっているらしい(後述) 00: 不明。多分特に意味のないクッションデータ。 31 00 00 00 00 00 00 31: 実データが格納されているセクタ番号。 リトルエンディアン4バイト(31 00 00 00)と、ビッグエンディアン4バイト(00 00 00 31)、 同じ値が両方の形式で格納されている。(エンディアンについてはWikipediaを参照) セクタ番号は16進で0から数えるため、31h+1=50番目のセクタを表す。先述の計算式により、 このファイルは 10h+31h×(2048+304)=アドレス1C240 以降にあるということになる。 14 1A 02 00 00 02 1A 14: 実データのファイルサイズ。 これもリトルエンディアン4バイトとビッグエンディアン4バイトで格納されている。 つまりこの場合は 21A14=137,748バイト。 5F 08 18 0F 02 22: 1バイトごとに年月日時分秒を表す。 作成日時と更新日時の区別はないため、エクスプローラ上では両方この日付時刻が表示される。 これをそのまま10進にすると(19)95/8/24 15 02 34である。 しかし実際は(日本では)これに+4時間した1995/8/24 19 02 34と表示される。 元データの15 02はUTC(世界標準時)でもないので、なぜこうなのかは良く分かっていない。 ※ なお、+4時間した結果日付が変わるようであれば繰り上げて表示される。 (例:作戦ファイル、FILM0000.CPK、日本時1995/8/16 2 46、元データは8/15 22 46) 14 00 00 00 01 00 00 01: 今のところ不明。ただしファイルでなくフォルダの場合は2バイト目が02に変化することは判明している。 0C:次に続くファイル名の文字数(データサイズ)つまり0C=12文字。 30 30 30 30 30 30 30 30 2E 42 49 4E:「00000000.bin」←ぴったり12文字 ASCII文字コード形式でファイル名を表す。ただしこのファイルは違うが、末尾になぜか「;1」(3B 31)が付く場合が殆どで、 その場合はファイル文字数も「;1」分までカウントされる(エクスプローラ上では「;1」は表示されない)。 00:多分ただのクッションデータ。ここまで46バイト、直後は次のインデックスになる。 なおこの00は無い場合がある。先述の通りインデックス1件のデータは必ず偶数になっている模様だが、 変動要因であるファイル名文字数自体は偶奇どちらもありうる。そこでこの00があるかないかで偶数に調整しているようだ。 改めて冒頭の「22 00 14 00~」を解析すると、 インデックスデータ量22バイト、セクタ番号14h(アドレスB7D0)、ファイルサイズ8,192バイト(4セクタ分)、 時刻(日本時)1995/8/24 19 02 34、続いて14 02 00 00 01 00 00 01(2バイト目が02なのでフォルダ属性を表す)、 ファイル名なし(ファイル名文字数は0ではなく1とされている) ※ 以上がなぜかほぼ2回繰り返されており、その後00000000.binのインデックスへと続く。 アドレスB7D0はこのファイルインデックスの冒頭と一致する。つまりこのCD-ROMの「ルートフォルダ」と推定される。 改造におけるインデックス利用 改造目的でインデックスを使うのであれば、 ・セクタ番号: 実データ格納アドレスを計算、あるいは参照セクタそのものを変えてしまう ・ファイルサイズ: 改造対象のファイルサイズを増やしたいときにここの値を変える などが重要になるだろう。 特にセクタ番号の情報は改造したいファイルの冒頭データをコピー → 検索だけでは限界がある場合に有効だ。 ただしファイルサイズを増やすのには上限がある(2048の倍数を超えると次のファイルのセクタ領域に行ってしまう) ので、より大規模な改造としては、CDイメージ全体の末尾にある大量の空白セクタを利用して、 ここに新たにファイルを書き込み、それをインデックスから参照させるといったこともできるかもしれない。 (あまり大きいファイルだと当面は困難ではあるが)
https://w.atwiki.jp/javastudy/pages/35.html
第7章 ★バイナリの読み書き ■バイナリファイルの読み込み手順 ①ファイルを開く FileStream(ストリームクラス)のオブジェクトを生成してファイルを読み込む FileInputStream in = new FileInputStream (“file3.dat”); ←ファイル生成 ②データを読み込む readメソッドを使用する。読み込んだ1バイトデータをint型で返す。 読み込むデータがなくなるとー1を返す。 Int c; c = in.read(); ③ファイルを閉じる close()メソッドを使用 in.close(); ■バイナリファイルの書き出し手順 ①ファイルを開く FileOutputStream(ストリームクラス)のオブジェクトを生成してファイルを書き出す FileOutputStream out = new FileOutputStream (“file4.dat”); ←この名前でファイル生成 ②データを書き出す write()メソッドを使用する。引数として与えたデータをファイルに書き出す。 引数にはint型かbyte型の値を指定 out.write(65); ③ファイルを閉じる close()メソッドを使用 out.close(); ■文字ストリームへの変換 InputStreamReader バイナリ入力→文字入力へ変換 バイナリデータを読み込むオブジェクトを引数として受け取る FileInputStream ifile = new FileInputStream(“file5.dat”); InputStreamReader in = new InputStreamReader(ifile); ↑オブジェクト名 ↑InputStreamReaderクラスのオブジェクト OutputStreamReader バイナリ出力→文字出力へ変換 バイナリデータを読み込むオブジェクトを引数として受け取る FileOutputStream ofile = new FileOutputStream(“file5.dat”); OnputStreamReader out = new OutputStreamReader(ofile); ↑オブジェクト名 ↑OutputStreamReaderクラスのオブジェクト ■ サンプルプログラム import java.io.*; class InOut { public static void main(String[] args) { try { String filename = "file.dat"; FileOutputStream out = new FileOutputStream(filename); FileInputStream file = new FileInputStream(filename); InputStreamReader in = new InputStreamReader(file); for(byte i = 1; i = 10; i++) { out.write(i); } int c; while((c = in.read()) != -1) { System.out.print(c + " "); } in.close(); out.close(); } catch (IOException e) { System.out.println("ファイルがありません。"); } } }
https://w.atwiki.jp/riaru/pages/21.html
リアル彼女のバイナリデータ改造についてまとめてみました。 ※情報提供に感謝です NoDVD化 Title リアル彼女 Crack NoDVD FILENAME RealKanojo.exe 00002C49 75 → EB 解像度変更関連(体験版) 80 :名無しさま:2009/11/28(土) 01 03 18 RealKanojoTrial.exeの 93FE A0 05 → 80 07 9405 84 03 → B0 04 で1440x900(32bit)→1920x1200(32bit)へ 未確定情報 516 名前:名無しさん@ピンキー[sage] 投稿日:2009/12/15(火) 20 04 56 ID JrtYdkYf0 クリスマスパッチあてた後のTrial_oにだが 59868 BD → DD 5987E 3D → 40 59874 BD → DD 598AA 3D → 40 598E6 C0 → D0 598F9 00 → FF 上下左右振り向き、前後移動制限解除出来る、と思う 改造あんまりやったこと無いから間違ってたら済まん 見あたらなかったら BD 8B 8D 34 F7 FF FF とかで探すと出ると思う 573 名前:名無しさん@ピンキー[sage] 投稿日:2009/12/16(水) 20 00 36 ID LTBBm4sc0 59868 BD → DD 5987E 3D → 40 59894 BD → DD 598AA 3D → 40 598E6 C0 → D0 598F9 00 → FF 575 名前:名無しさん@ピンキー[sage] 投稿日:2009/12/16(水) 20 16 18 ID eVBmlltg0 色々ありがとう やる度にちゃんとアンインストールして、インストールしなおした上で バイナリ書き換えしているんだけどねぇ。 573 のでもう一度やってみます。 576 名前:573[sage] 投稿日:2009/12/16(水) 20 33 58 ID eVBmlltg0 おお、多分出来ました。ありがとーall 体験版の会話始める前少し動かせました ベンチで動かす方法よくわからないけどw 製品版 364 :146:2010/03/06(土) 23 11 08 exeの中に2ヶ所しかないからC3 B8 B2 BDを探せ。 000714E8 BD→DD 000714FE 3D→40 00071514 BD→DD 0007152A 3D→40 00071566 C0→D0 00071579 00→FF 情報提供 情報提供にご協力お願い致します。 9405 84 03 → 38 04 で1080 -- あ (2009-11-30 21 03 57) 要は解像度16進数にして書き込んじゃえばいいってことだわな -- 名無しさん (2009-12-05 00 02 57) 体験版のおさわりの時はctrl押しながらで動かせる -- 名無しさん (2009-12-19 20 59 43) nodvd化が上に書いてあるとおりやったんですけどうまくいきません、どうすればいいですか? -- うぼぁ (2011-09-24 22 52 22) ↑自己解決しました。DVDドライブにディスクが入ってるとうまくいかないみたいですね。ディスクを取り出したら上手くいきました -- うぼぁ (2011-09-25 18 02 30) お名前 コメント
https://w.atwiki.jp/pokemonbug/pages/45.html
初代ポケモンにおいてアドレスD56Fh~D66Ehの256バイト分はマップごとの小さなイベントの進行状況などを管理するために使われている。 しかし、実際に使われるのはD5E8hまでで、D5E9h~D66Ehまでの134バイトは通常プレイで書き換わることがない模様。 そこで、この領域にバイナリエディタのコードを仕込むことで、ボックスやPCを自由に使えるようにできる。 ROMバンク切り替え機能付きのバイナリエディタは193バイトあるのでこの領域だけでは無理だが、出入り口周り?の管理用アドレス(D3AFh~D42Ehの128バイト)にも未使用領域があるので、コードを二か所に分割すれば実装できる。(ピカチュウ版では一部がピカチュウのごきげん度周りに使われているため、パソコンの道具周りを弄った方が良さそう) コード引用 RAM Writer for Pokemon Red/Green/Blue/Yellow (JPN) · GitHub D5E9hから書き込むバイナリエディタ。E9hが「ァ」で初代では入力不能なため、起動位置がD62Ch「じよ」からになっている点に注意。 参考動画 データ消去からバイナリエディタ起動までを通しで動画化したもの。 この動画自体に解説は無いため、詳しい内容は別の場所を参考に。(開始位置が違うため、使用するコードの違いに注意) RAM Writer in Pokémon Red/Green/Blue (JPN) - YouTube 赤緑青版。 どこかしらドアからのDry Underflowで道具欄を破壊して必要な素材を揃え、無限イーブイによるコーディングを行う。 解説→【初代ポケモン】お手軽20分。バイナリエディタ作成チャート解説【バグ技 任意コード実行】 - YouTube RAM Writer in Pokémon Yellow (JPN) - YouTube ピカチュウ版。(前期・後期両対応) レポートバグで手持ちポケモンと道具欄を破壊して必要な素材を揃え、無限イーブイによるコーディングを行う。 解説→バイナリエディタ導入チャート ピカチュウ版 簡易型バイナリエディタ 導入 こちらは従来同様、ボックスのニックネームで記述する。 書き込み位置の違いから、一部使用するニックネームが異なる点に注意。 下記コードのニックネームのポケモンをボックスに預ける。(計21~22匹) (ピカチュウ版の場合) かいがらバッヂ使用→1~18匹目には適当なポッポまたはコラッタ、19匹目にメノクラゲ、20匹目にウツボットが必要。 はやぶさバッヂ使用→DE64h(ボックス1匹目のニックネーム1文字目)に飛べるようにする。 初期版の場合はボックス5匹目の親名を「○○てEん」にする。(「○○」は任意) 例:手持ち3匹目の親名に「てEん」を付与するコード これで書き換えた「ぼヂてソん」をボックス5匹目に置けば共通のコードが使える。 がめぜぱぼ(26 D2 2E 44 3E 50) アドレスD244hは手持ち3匹目親名の終端(6文字目) 主人公の名前が4文字以下だと50hが入らないための予防線 づぼんづダ(32 3E DE 32 0F 50) rrcaでDEhを6Fhにする。 よジづぼて(D6 0B 32 3E C3) 6Fhから0Bhを引いて64hにする。 づの 後期版の場合はパソコンの道具9番目から以下のように並べる。(これは個数限定品を使わないパターン) かみなりのいし×32 わざマシン07×1 スペシャルアップ×15 まひなおし×9 わざマシン33×任意 ちなみに上記導入チャート(後期版用)ではパソコンの中身が以下のようになっている。 キズぐすり×1(14 01) これは初期状態で入っているもの。 やめる(FF 01) 道具欄から預けたもの。 カードキー(30 01) やめるの下のアイテムは個数まとめ処理が行われないため、1個ずつ預けられる。 カードキー(30 01) カードキー(30 01) カードキー(30 01) カードキー(30 01) カードキー(30 01) ポケモン×1(C3 01) ライバルの名前「て」(C3h)から取ったもの。 わざマシン22×1(DE 01) ライバルの名前「ん」(DEh)から取ったもの。 ポケモン×1と合わせてC3 01 DE [jp DE01]となり、ボックス14匹目の親名4文字目から実行。 ここで主人公に付けた「がんョぜメ」が活きる。 育て屋に特定のニックネームのポケモンを預ける。(ピカチュウ版では不要) サファリボールの残り個数を0にする必要もあるが、これは適当なダンジョンで「あなをほる」「あなぬけのヒモ」を使えばいい。 赤緑の場合は「ーゆてょん」を預けた状態にする。 青の場合は「パパてょん」または「パパてEん」を預けた情報を残す。(「パパてEん」の場合、22匹目は不要になる) 赤緑青ではなかよしバッヂ、ピカチュウ版ではかいがらバッヂ(はやぶさバッヂ)を使用する。 成功すればD5E3hからの簡易型バイナリエディタが起動する。 すでに他のバイナリエディタを導入済みならD5E9hからバイナリエディタ本体のコードを書きだせばいい。(そのままコピペしても参照位置の違いからうまくいかない) コード(簡易型バイナリエディタ) ピカチュウ後期版でのコード例。(赤緑以外では「てEん」または「てょん」、赤緑では「ーゆてょん」預けで実行) 上記導入チャートでは親名(主人公の「がんョぜメ」)からコードを実行する関係で1匹目が省略されており、一部絶対ジャンプやアドレス指定の位置がずれているので注意。 がんョぜル よヂづよく づひせがゆ※C0hのbit7を折ることで40hにする。(ピカチュウ初期版ではBFh→3Fh) 赤緑後期では「づよむづな」※38hからD1hを引いて67hを作る。 赤緑初期では「づよそづな」※38hからBFhを引いて79hを作る。 青では「づ空空がゆ」※「タ」(8F)のままでいいので空白で構わない。 ぜーダだグ 赤緑初期では「ゅョダだグ」※push bc→pop hlでhlレジスタをD5E3hにする。 ぼヂてソん※ピカチュウ初期ではこのポケモンの親名を「○○てEん」または「○○てょん」にする。余計なジャンプを起こさない主人公名なら親名変更の必要はない。 ダだギムツ てソんダム キづごヅー ぱへにんぴ へにんボぷ へにんへた※5、6文字目は冒頭のコードで「パね゜」に書き換えられる。これは初期版と記述を統一するためのもの。 赤緑では「へにんへ」※5、6文字目は冒頭のコードで「Hね゜」(後期)「┏ね゜」(初期)に書き換えられる。 青では「へにんへタ」※6文字目は冒頭のコードで「ね゜」に書き換えられる。5文字目は書き換えない。 ピカチュウ初期では「へにんへそ」※5、6文字目は冒頭のコードで「ま゜ね゜」に書き換えられる。 ううゾダグ※1文字目は冒頭のコードで「円」に書き換えられる。 ダめいんど ダれチんダ めしんざダ れじよダリ※この部分が従来と異なる だいなひだ へみんちレ ぼダメギて よザれんん よメボデの だアの※「てょん」を使う場合のみ必要。ここから相対ジャンプで1匹目のニックネームに飛ぶ。 操作方法(簡易型バイナリエディタ) A 指すアドレスを+1h 数値を入力したらAで進めていくことになる。 B 指すアドレスを-1h 下 指しているアドレスの値を+1h 上 指しているアドレスの値を-1h 右 指しているアドレスの値を+10h 左 指しているアドレスの値を-10h SELECT アドレスD62Chからプログラム実行。バイナリエディタが完成してから行うこと。 START 簡易型バイナリエディタを終了。長いコードを打ち込むので、セーブしながら進めるのが吉。 始点はD5E3hで固定されている点に注意。 バイナリエディタ本体 以下のコードをD5E9h(初期位置D5E3hの6バイト先)から書き込み、D62Chからコードを実行(「てじよ」)するとバイナリエディタが起動する。 D5EAhの部分はバージョンによって数値が異なる。 操作方法(バイナリエディタ) 開始位置はD62DhとD62Ehで指定している。 キー 操作 上 アドレスを-01h 下 アドレスを+01h 左 アドレスを-10h 右 アドレスを+10h B+上 アドレスを-100h B+下 アドレスを+100h B+左 アドレスを-1000h B+右 アドレスを+1000h SELECT カーソル位置のプログラム実行 A+下 数値を+01h A+上 数値を-01h A+左 数値を-10h A+右 数値を+10h START バイナリエディタを終了 コード(バイナリエディタ本体) バイナリエディタ本体(121バイト) アドレス 値 備考 D5E9 CD D5EA 赤緑初期:79 赤緑後期:67 青:8F ピカチュウ初期:3F ピカチュウ後期:40 D5EB 38 D5EC F0 D5ED B3 D5EE 01 D5EF 01 D5F0 00 D5F1 07 D5F2 38 D5F3 18 D5F4 0B D5F5 0B D5F6 07 D5F7 38 D5F8 13 D5F9 0E D5FA F0 D5FB 07 D5FC 38 D5FD 0E D5FE 01 D5FF 10 D600 00 D601 07 D602 38 D603 08 D604 07 D605 38 D606 03 D607 07 D608 D0 D609 E9 D60A E1 D60B C9 D60C 79 D60D CB D60E 43 D60F 20 D610 06 D611 CB D612 4B D613 20 D614 05 D615 09 D616 C9 D617 86 D618 77 D619 C9 D61A 84 D61B 67 D61C C9 D61D F5 D61E CB D61F 37 D620 CD D621 24 D622 D6 D623 F1 D624 E6 D625 0F D626 C6 D627 F6 D628 F6 D629 60 D62A 22 D62B C9 D62C 21 実行時はここからスタート D62D 00 開始アドレスを指定 D62E D0 D62F CD D630 E9 D631 D5 D632 E5 D633 11 D634 F8 D635 FF D636 19 D637 E5 D638 D1 D639 21 D63A AB D63B C3 D63C 01 D63D 0C D63E 00 D63F 36 D640 7C D641 23 D642 7A D643 CD D644 1D D645 D6 D646 7B D647 CD D648 1D D649 D6 D64A 36 D64B 7F D64C 23 D64D 1A D64E CD D64F 1D D650 D6 D651 13 D652 36 D653 7C D654 09 D655 7C D656 FE D657 C5 D658 20 D659 E5 D65A 3E D65B ED D65C EA D65D 4B D65E C4 D65F E1 D660 18 D661 CD
https://w.atwiki.jp/chulainn/pages/16.html
二体の属性を合体させて一体の別な属性の悪魔を造り出す。 いわゆる二身合体。 【基本合体法則】 紅蓮 銀氷×疾風、雷電×外法、疾風×蛮力 銀氷 紅蓮×外法、雷電×疾風、雷電×蛮力 雷電 紅蓮×疾風、銀氷×蛮力、疾風×外法 疾風 紅蓮×銀氷、紅蓮×蛮力、蛮力×外法 蛮力 紅蓮×雷電、銀氷×雷電、銀氷×外法 外法 銀氷×銀氷、雷電×雷電、技芸×技芸 技芸 紅蓮×紅蓮、疾風×疾風、蛮力×蛮力、外法×外法 【特殊合体法則】 技芸属性と合体すると結果がランダムになる。
https://w.atwiki.jp/pokemonbug/pages/24.html
バイナリエディタ メモリエディタ、RAMエディタとも。 RAMを自由自在に編集できるプログラム。任意コード実行の最高到達点の一つ。 これがあればもはや書き換え系のコードをいちいち作成する必要性がなくなり、任意コード実行用のプログラムの書き込みも非常に容易になる。 思わぬ範囲まで効果が及ぶ可能性があるので危険が伴います。実験・使用・使用後のセーブには充分注意しましょう。 目次 簡易型バイナリエディタ(flag3式) バイナリエディタの導入を楽にするための入力ツール。メールとボックスを使って書く。 おまけ:バイナリエディタをボックス6に退避させる もしもに備えて余裕があったら退避を。ちなみにボックス6にするのはsRAMバンクが違うから。 豪華版バイナリエディタ(Teraman式、344バイト) 機能が多く欲しい人やバグ図鑑・分類違いわざマシン両対応のバイナリエディタが欲しい人向け。開始位置を保存できる。 バイナリエディタ(flag3式、185バイト) 簡単に導入したい人向け。バグ図鑑での起動と分類違いわざマシンでのバックからの起動で細部を変える必要がある。両対応しました。 簡易型バイナリエディタ(Teraman式) 動画で紹介されている方法の補足。wRAMへの書き込みを前提としている。 簡易型バイナリエディタ旧版(クリスタル専用) 昔はちまちま書き込んでいました。 簡易型バイナリエディタ(flag3式) 参考資料 ポケモン金銀にバイナリエディタを移植したお話 - flag3833753 ポケモンクリスタルにおけるバイナリエディタ - flag3833753 2023/12/11更新!コードの見直しにより修正用メールが1通になりました。 最後に読んだメールからの任意コード実行を可能にした状態で、ボックスの名前を下記のものに書き換える。 (金銀は図鑑モード06hを利用してCF40hへ、クリスタルは図鑑モード0ChでD021hに飛ぶことを想定する) ボックス1の「がヲ」とボックス2の「ぜナ」の部分が簡易型バイナリエディタの開始位置(この場合はAA94h)となる。 これはSRAM03hのオープンと合わせることで、バイナリエディタの本体をボックス9に書き込むものとなる。 金銀 ぼギダへマだがヲ ぜナョダだグぼダ ぞてはりダムキづ ごヅまてぱへごまぴ へごまボぷへごま へォわたしひ ぐイ゛ど ダれへリダだイ゛ざ ダダれャだダだな ぼヂてはリ 入力不可能な文字がある(「わたし」も1文字)ため、下記メールで修正を行う。 ぼぴがリぜゆづぜゅよダづにひぜ? ずづぜ8ひラづのののののののだっ 文末の「だっ」は「てパま」(jp CF40)を使用する場合に対応するもの。 クリスタル ぼギダへマぞがヲ ぜナョダだグぼダ ぞてアろダムキづ ごヅまとぱへジみぴ へジみボぷへジみ へブばん どうろひ ぐイ゛ど ダれエろダだイ゛ざ ダダれャぞダだな ぼヂてアろだあ 入力不可能な文字がある(「ばん どうろ」も1文字)ため、下記メールで修正を行う。 ぼぴがろぜシづぜネよヂづにふぜフ づぜヨづののののののののののだっ ボックスの入力が終わったら、下記のメールを読んでコードを実行すると、簡易型バイナリエディタが起動する。 2023/12/11更新!バグ図鑑モード・分類違いわざマシンの両方に対応しました。 金銀 へロどへュでていリなひだへづまち ぼダメに0ぞ?ムぞボデのののだっ ※「ののだっ」はCF40hから実行する場合のみ必要。 クリスタル へなづへつぢておろなひだへドみち ぼダメに0ぞ?ムぞボデのののだっ ※「ののだっ」はD021h(図鑑モード0Ch)から実行する場合のみ必要。 操作方法 左4桁にアドレスが表示され、右2桁が数値となる。 専用のフォントを呼び出せていない関係で、ABCの3文字が文字化けしている。 起動のたびにメールを読み直す必要がある点に注意。 数値の対応表 数値(文字) バッグ 図鑑 A ■ g B ▲ 青色の線 C 携帯マーク 携帯マーク キー入力 キー 操作 A 指すアドレスを+01h B 指すアドレスを-01h 下 指しているアドレスの内容を+01h 上 指しているアドレスの内容を-01h 左 指しているアドレスの内容を+10h 右 指しているアドレスの内容を-10h START 簡易型バイナリエディタを終了 この簡易型バイナリエディタを使って、ボックス9の中にバイナリエディタのコードを打ち込んでいく。 開始地点であるAA94hから書き込むと預け数が異常な数になってしまうため、 AA94に崩壊防止のため1Eh AAB3に終端をあらわすFFh を入れ、AAB4から書き込み始めるとよさそう。 AA95~AAB2は、00hで埋めておくと見た目は誰もいないのにボックスがいっぱいという状況になるが、ボックス整理で無理やり上限突破をすることもできてしまうため、不安なら01h(フシギダネ)やFDh(タマゴ)などで埋めておくのが無難。一応、344バイトのデータはポケモン11匹分で収まるようになっている。 紹介するのはこちら。 豪華版バイナリエディタ(Teraman式、344バイト) 機能が多く欲しい人やバグ図鑑・分類違いわざマシン両対応のバイナリエディタが欲しい人向け。開始位置を保存できる。 バイナリエディタ(flag3式、185バイト) 簡単に導入したい人向け。バグ図鑑での起動と分類違いわざマシンでのバックからの起動で細部を変える必要がある。両対応しました。 おまけ:バイナリエディタをボックス6に退避させる 入力ミスがあった場合、ボックス7~9のデータが消し飛ぶ可能性がある(逆にボックス1~6が被害にあう可能性もなくはないけれど…)ため、余裕があるならボックス6にバイナリエディタのデータを退避させておくとリカバリーが容易になる。 現在ボックスの番号が金銀ではD8AFh、クリスタルではDB65hに記録されており、ここを書き換えてからレポートを書くことでボックスをコピーすることができる。 具体的には以下の手順となる。 コピー元のボックスに切り替える。 現在ボックスのアドレスをコピー先のものに書き換える。 ボックスの番号は00hから始まる点に注意。(そのためボックス9は08h、ボックス6は05hになる) レポートを書く。(STARTメニューからでいい) 退避:ボックス9→ボックス6※要実行後レポート 金銀 ヅョリぼガデの空空空空空空空空空 空空空空空空空空空空空空空空だっ クリスタル ヅはろひびぼガデの空空空空空空空 空空空空空空空空空空空空空空だっ 復元:ボックス6→ボックス9※要実行後レポート 金銀 ヅョリぼゲデの空空空空空空空空空 空空空空空空空空空空空空空空だっ クリスタル ヅはろひびぼゲデの空空空空空空空 空空空空空空空空空空空空空空だっ 以下旧版。こちらはバイナリエディタの記述部分を一時領域経由でコピーするコードになる。 SRAMバンクが違うため、コピーはWRAMを経由してメール2通に分ける。 実行時に使うものと一時コピー先は同じなので、退避終了後に金銀では「てぬわ」、クリスタルでは「てあめ」でコードを実行してテストしてしまうのもいいだろう。 ※flag3式バイナリエディタ(金銀版)の場合はアドレスDCC6hから始めているので、アドレスの指定を「にわ」にすることを推奨。 退避:ボックス9(03h AAB4h)→ボックス6(02h BA92h) 金銀1 ョぶぺぶぶヅぬわがヲぜえへマだ空 ゾパひァへよだてャだ空空空空だっ 金銀2 ョぶぺぶヅテこがわぜぬへマだ空空 ゾパひァへよだてャだ空空空空だっ クリスタル1 ョぶぶぺぶヅあめがヲぜえへマぞ空 ゾパひァへ/ぞてャぞ空空空空だっ クリスタル2 ョぶぶぺヅテこがめぜあへマぞ空空 ゾパひァへ/ぞてャぞ空空空空だっ 復元:ボックス6(02h BA92h)→ボックス9(03h AAB4h) 金銀1 ョぶぺぶヅぬわがこぜテへマだ空空 ゾパひァへよだてャだ空空空空だっ 金銀2 ョぶぺぶぶヅえヲがわぜぬへマだ空 ゾパひァへよだてャだ空空空空だっ クリスタル1 ョぶぶぺヅあめがこぜテへマぞ空空 ゾパひァへ/ぞてャぞ空空空空だっ クリスタル2 ョぶぶぺぶヅえヲがめぜあへマぞ空 ゾパひァへ/ぞてャぞ空空空空だっ 豪華版バイナリエディタ V2(Teraman式、344バイト) 参考資料(最新版の情報あり) 簡単!?バイナリエディタ導入! ポケモン第二世代任意コード実行講座 Part.08【VOICEROID紲星あかり】 本体のコードは長くなるので最後に記載。なお、簡易型バイナリエディタは上記の動画とはプロセスの違うものである点に注意。 実行用コード SRAM内にあるままだと実行時に不便なため、WRAM内の適当なアドレスに内容をコピーして使用する。 コピー先として使用するDCC7h(金銀)、D2B1h(クリスタル)は戦闘時に敵パーティの中身が入る領域。非戦闘時には自由に利用できる。 ※AAB4hからのコピーなので、AA94hからコピーする場合は「ガヲぜえ」の「え」を「ナ」にする。 金銀 ョぶぺぶぶヅぬわがヲぜえへマだ空 ゾパひァへよだへャだてぬわ空だっ クリスタル ョぶぶぺぶヅあめがヲぜえへマぞ空 ゾパひァへ/ぞへャぞてあめ空だっ メールでの実行が確認出来たら簡易型バイナリエディタは不要になるので、ボックスからの実行にするといちいちメールを読む必要がなくなり、他のメール使用コードを持ち運びやすくなる…かも。 金銀 ョぶぺぶがヲぜえ ヅぬわぶヘマだゆ むゾパひァへよだ へャだてぬわ クリスタル(始点はDB68h) ョぶぶぺがヲぜえ ヅあめぶヘマぞゆ むゾパひァへォぞ へャぞてあめ 金銀版の場合は以下のニョロボンを作って手持ち3匹目に置くと、わざマシン17から一発でバイナリエディタに飛べる。 経験値や努力値にコードを書きこんでいる関係上、戦闘で経験値が入ると崩壊することに注意。 Teraman式バイナリエディタ実行用ニョロボン 内容 数値 ニモニック 種族 ニョロボン 3E ld a,03 持ち物 ひかりのこな 03 技1 ころがる CD call 309D 技2 いわなだれ 9D 技3 ちょうおんぱ 30 技4 たいあたり 21 ld hl,AAB4 ID 46250 B4 AA 経験値 90113 (Lv.46) 01 ld bc,0160 60 01 H努力値 4551 (H152) 11 ld de,DCC7 C7 A努力値 56525 (A121) DC CD call 30D6 B努力値 54832 (B125) D6 30 S努力値 52653 (S107) CD call 30AD AD C努力値 12483 (C93/D111) 30 C3 jp DCC7 AB個体値 A12/B7 C7 SC個体値 S13/C12 DC クリスタル版の場合は分類違いわざマシンの実行位置に以下のコードを書き込むのも有効。(21バイト) 3E 03 CD 9D 2F 21 B4 AA 11 B1 D2 01 60 01 D5 CD F2 2F C3 AD 2F ; ld a,03→call 2F9D→ld hl,AAB4→ld de,D2B1→ld bc,0160→push de→call 2FF2→jp 2FAD 画面表示 左から順に、 ROM、sRAMバンクナンバー アドレス カーソル、書き込みモード時は白抜きになる 左のアドレスに格納されている値 操作方法 通常モード キー 操作 上 アドレスを-01h 下 アドレスを+01h 左 アドレスを-10h 右 アドレスを+10h SERECT+上 アドレスを+100h SERECT+下 アドレスを-100h SERECT+左 アドレスを-1000h SERECT+右 アドレスを+1000h START+上 バンクを+01h START+下 バンクを-01h START+左 バンクを-10h START+右 バンクを+10h A 書き込みモードに移行 B バイナリエディタを終了 START+A カーソル位置のプログラム実行 書き込みモード キー 操作 上 数値を+01h 下 数値を-01h 左 数値を-10h 右 数値を+10h SERECT 数値を00hにする A 数値を書き込む B 書き込みをキャンセル 説明 簡易型バイナリエディタでは1バイトずつしかアドレスを表示できなかったが、豪華版では画面全体を使って16バイト分のアドレスを表示できるようになっている。 他にも桁ごとの増減、ROMバンク切り替え、プログラムの実行などの高度な機能が実装されている。 ちなみにvRAMおよびwRAMのバンク切り替え機能は付いていないが、これはどちらも必要になる状況が非常に限られている上、実装に非常に手間と容量がかかるためである。 このバイナリエディタには開始アドレスとROMバンクの情報を記録する機能があるが、この情報は「おかあさん」の名前データ(未使用)に書き込まれている。(金銀ではD1BBh~、クリスタルではD494h~) これで不具合が起こるのは意図的に文字列49h(通常なら「おかあさん」と表示される)を表示したときぐらいである。 仕様上、sRAM内のデータを弄ろうとすると書き込みモード開始時に初期値が現在値と関係なくFFhになってしまうことに(最初は書き込み前の値が表示されることを含めて)注意。 書き込むコード 金銀(書き込み先はDCC7h~) cd a8 34 11 b2 4e 21 00 90 01 23 3e cd 76 0e cd b4 0e cd 87 0d cd 95 0d cd b8 33 f0 9f f5 21 bb d1 2a 47 2a 4f 56 3e ed ea e2 c3 c5 7a cd 9d 30 d7 21 a0 c3 cd 26 dd d5 11 14 00 19 d1 1e 10 78 cd 26 dd 79 cd 26 dd 23 0a cd 26 dd 03 d5 11 0d 00 19 d1 1d 20 e9 c1 cd ad 30 cd 37 dd 18 cc c5 0e 02 47 cb 30 3e 0f a0 c6 f6 22 0d 20 f5 c1 c9 c5 cd f4 36 c1 67 f0 aa cb 5f 20 1e cb 57 20 30 cb 7c 20 3e cb 74 20 3c cb 6c 20 3a cb 64 20 3b cb 4c 20 3e cb 44 20 6c 18 d6 cb 7c 20 4b cb 74 20 49 cb 6c 20 47 cb 64 20 47 cb 44 20 30 18 e0 cb 7c 20 42 cb 74 20 40 cb 6c 20 3e cb 64 20 3f 18 ce 03 c9 0b c9 21 f0 ff 18 03 21 10 00 09 44 4d c9 21 bb d1 78 22 79 22 72 f1 f1 d7 c9 c5 d5 7a 21 02 00 09 cf d1 c1 c9 15 c9 14 c9 3e f0 18 02 3e 10 82 57 c9 05 c9 04 c9 21 00 f0 18 cf 21 00 10 18 ca 03 03 0a 5f 21 e2 c3 3e ec 77 c5 cd f4 36 c1 cb 7f 20 1a cb 77 20 19 cb 6f 20 19 cb 67 20 19 cb 57 20 1a cb 4f 20 27 cb 47 20 1a 18 dd 1d 18 01 1c 7b 18 0b 3e f0 18 02 3e 10 83 18 01 af 5f 23 cd 26 dd 18 bf 7a cd 9d 30 7b 02 cd ad 30 3e ed 77 0b 0b c9 クリスタル(書き込み先はD2B1h~) cd c5 32 11 c0 4d 21 00 90 01 22 3e cd c6 0d cd c5 0f cd 3b 0e cd 49 0e cd cc 31 f0 9d f5 21 94 d4 2a 47 2a 4f 56 3e ed ea e2 c4 c5 7a cd 9d 2f d7 21 a0 c4 cd 10 d3 d5 11 14 00 19 d1 1e 10 78 cd 10 d3 79 cd 10 d3 23 0a cd 10 d3 03 d5 11 0d 00 19 d1 1d 20 e9 c1 cd ad 2f cd 21 d3 18 cc c5 0e 02 47 cb 30 3e 0f a0 c6 f6 22 0d 20 f5 c1 c9 c5 cd 1b 35 c1 67 f0 a9 cb 5f 20 1e cb 57 20 30 cb 7c 20 3e cb 74 20 3c cb 6c 20 3a cb 64 20 3b cb 4c 20 3e cb 44 20 6c 18 d6 cb 7c 20 4b cb 74 20 49 cb 6c 20 47 cb 64 20 47 cb 44 20 30 18 e0 cb 7c 20 42 cb 74 20 40 cb 6c 20 3e cb 64 20 3f 18 ce 03 c9 0b c9 21 f0 ff 18 03 21 10 00 09 44 4d c9 21 94 d4 78 22 79 22 72 f1 f1 d7 c9 c5 d5 7a 21 02 00 09 cf d1 c1 c9 15 c9 14 c9 3e f0 18 02 3e 10 82 57 c9 05 c9 04 c9 21 00 f0 18 cf 21 00 10 18 ca 03 03 0a 5f 21 e2 c4 3e ec 77 c5 cd 1e 35 c1 cb 7f 20 1a cb 77 20 19 cb 6f 20 19 cb 67 20 19 cb 57 20 1a cb 4f 20 27 cb 47 20 1a 18 dd 1d 18 01 1c 7b 18 0b 3e f0 18 02 3e 10 83 18 01 af 5f 23 cd 10 d3 18 bf 7a cd 9d 2f 7b 02 cd ad 2f 3e ed 77 0b 0b c9 表形式でまとめたものは別ページへ。 バイナリエディタ(flag3式、185バイト) 参考資料 ポケモン金銀にバイナリエディタを移植したお話 - flag3833753 ポケモンクリスタルにおけるバイナリエディタ - flag3833753 ポケモン金 バイナリエディタ起動RTA チャート - flag3833753 ニューゲームから始めるバイナリエディタ導入の参考に。こちらのチャートでは図鑑モード06hから親名「てパま」を参照し、メールの31文字目に飛ばしている。 ポケモン金銀 バイナリエディタ起動 SRAM Glitch チャート - flag3833753 こちらはセーブ中リセットを最低2回は行うことになるが、キキョウジム攻略までで可能になるチャート。やはり図鑑モード06hから親名「てパま」を参照している。 ポケモンクリスタル バイナリエディタ起動 チャート - flag3833753 ライバル命名までで可能になるチャート。クリスタル特有の0x1500制御コードを利用して図鑑モードを0Chに書き換える。セーブ中リセットを最低1回は行う。 【クリスタル版】通信不要・お手軽30分!バイナリエディタ作成チャート解説【バグ技 任意コード実行】 - YouTube 上記の動画版。実際のリセットタイミングやバイナリエディタの挙動を映像で確認できる。 概要 2023/10/4更新:ROMバンク切り替え機能が追加されました。 こちらは初代のバイナリエディタを金銀に移植する形で作られたもので、操作感覚は初代のものに近い。(十字キーの長押し対応とsRAMバンクの切り替え機能が付いたぐらい) サイズはTeraman式の半分程度で、手軽に導入できるのが利点。 開始位置の保存機能やROMバンクの切り替え機能はついていない。ROMバンクを切り替えたいときはaレジスタにバンク番号を入れてrst 10を実行することになる。(例:3E xx D7 C9) ROM及びsRAMバンクナンバーはおかあさんの名前の「あ」の部分に保存するようになっている。(そのため、初期値はB1となる)バグ図鑑モードからの起動だと10h、分類違いわざマシンでの起動だと03hで始まる。 実行用コード SRAM内にあるままだと実行時に不便なため、WRAM内の適当なアドレスに内容をコピーして使用する。 コピー先として使用するDCC6h~(金銀、DD7Fhまで使用)、D2B1h~(クリスタル、D36Ahまで使用)は戦闘時に敵パーティの中身が入る領域。非戦闘時には自由に利用できる。 金銀版の開始位置がTeraman式と異なることに注意。 ※AAB4hからのコピーなので、AA94hからコピーする場合は「ガヲぜえ」の「え」を「ナ」にする。 金銀 ョぺぶぶぶヅにわがヲぜえへマだ空 ゾけへよだへャだてにわ空空空だっ ※空空空だっはCF40hから実行する場合のみ必要。 クリスタル ョぶぺぶぶヅあめがヲぜえへマぞ空 ゾけへ/ぞへャぞてあめ空空空だっ メールでの実行が確認出来たら簡易型バイナリエディタは不要になるので、ボックスからの実行にするといちいちメールを読む必要がなくなり、他のメール使用コードを持ち運びやすくなる…かも。 金銀 ョぺぶぶがヲぜえ ヅにわぶヘマだゆ むゾけへよだ空空 へャだてにわ クリスタル(始点はDB68h) ョぶぺぶがヲぜえ ヅあめぶヘマぞゆ むゾこへォぞ空空 へャぞてあめ 金銀版の場合は以下のニョロボンを作って手持ち3匹目に置くと、わざマシン17から一発でバイナリエディタに飛べる。 経験値や努力値にコードを書きこんでいる関係上、戦闘で経験値が入ると崩壊することに注意。 flag3式バイナリエディタ実行用ニョロボン 内容 数値 ニモニック 種族 ニョロボン 3E ld a,03 持ち物 ひかりのこな 03 技1 ころがる CD call 309D 技2 いわなだれ 9D 技3 ちょうおんぱ 30 技4 たいあたり 21 ld hl,AAB4 ID 46250 B4 AA 経験値 112896 (Lv.49) 01 ld bc,00B9 B9 00 H努力値 4550 (H157) 11 ld de,DCC6 C6 A努力値 56525 (A128) DC CD call 30D6 B努力値 54832 (B132) D6 30 S努力値 52653 (S114) CD call 30AD AD C努力値 12483 (C99/D118) 30 C3 jp DCC6 AB個体値 A12/B6 C6 SC個体値 S13/C12 DC クリスタル版の場合は分類違いわざマシンの実行位置に以下のコードを書き込むのも有効。(21バイト) 3E 03 CD 9D 2F 21 B4 AA 11 B1 D2 01 B9 00 D5 CD F2 2F C3 AD 2F ; ld a,03→call 2F9D→ld hl,AAB4→ld de,D2B1→ld bc,00B9→push de→call 2FF2→call 2FAD 画面表示 左から順に、 ROM、sRAMバンクナンバー(sRAMバンクナンバーは表記上00h~ffhまでに見えるが、中身は00h~0fhをループしている。) アドレス カーソル 左のアドレスに格納されている値 操作方法 キー 操作 上 アドレスを-01h 下 アドレスを+01h 左 アドレスを-10h 右 アドレスを+10h B+上 アドレスを-100h B+下 アドレスを+100h B+左 アドレスを-1000h B+右 アドレスを+1000h SELECT+上 バンクを+01h SELECT+下 バンクを-01h SELECT+左 バンクを-10h SELECT+右 バンクを+10h SELECT+A カーソル位置のプログラム実行 A+下 数値を+01h A+上 数値を-01h A+左 数値を-10h A+右 数値を+10h START バイナリエディタを終了 書き込むコード (金銀) DCC6 CD A8 34 11 B2 4E 21 00 90 01 23 3E CD 76 0E CD 87 0D CD 95 0D AF 3C E0 D6 F0 9F F5 21 00 D0 CD 24 DD E5 11 F8 FF 19 E5 D1 21 A9 C3 F0 9F D7 CD 9D 30 CD 72 DD 01 0C 00 36 7C 23 7A CD 72 DD 7B CD 72 DD 36 7F 23 1A CD 72 DD 13 36 7C 09 7C FE C5 20 E5 CD AD 30 3E ED EA 4B C4 E1 18 C1 CD F4 36 F0 AB 5F 01 01 00 07 38 14 0B 0B 07 38 0F 0E F0 07 38 0A 01 10 00 07 38 04 48 07 38 09 CB 53 28 0F CB 43 28 05 E9 E1 F1 D7 C9 F0 9F 81 E0 9F C9 79 CB 43 20 06 CB 4B 20 0F 09 C9 F5 F0 9F CD 9D 30 F1 86 77 CD AD 30 C9 84 67 C9 F5 CB 37 CD 79 DD F1 E6 0F C6 F6 22 C9 (クリスタル) D2B1 CD C5 32 11 C0 4D 21 00 90 01 22 3E CD C6 0D CD 3B 0E CD 49 0E AF 3C E0 D4 F0 9D F5 21 00 D0 CD 0F D3 E5 11 F8 FF 19 E5 D1 21 A9 C4 F0 9D D7 CD 9D 2F CD 5D D3 01 0C 00 36 7C 23 7A CD 5D D3 7B CD 5D D3 36 7F 23 1A CD 5D D3 13 36 7C 09 7C FE C6 20 E5 CD AD 2F 3E ED EA 4B C5 E1 18 C1 CD 1B 35 F0 A9 5F 01 01 00 07 38 14 0B 0B 07 38 0F 0E F0 07 38 0A 01 10 00 07 38 04 48 07 38 09 CB 53 28 0F CB 43 28 05 E9 E1 F1 D7 C9 F0 9D 81 E0 9D C9 79 CB 43 20 06 CB 4B 20 0F 09 C9 F5 F0 9D CD 9D 2F F1 86 77 CD AD 2F C9 84 67 C9 F5 CB 37 CD 64 D3 F1 E6 0F C6 F6 22 C9 表形式でまとめたものは別ページへ。 簡易型バイナリエディタ(Teraman式) 参考資料(最新版の情報あり) 簡単!?バイナリエディタ導入! ポケモン第二世代任意コード実行講座 Part.08【VOICEROID紲星あかり】 動画で解説している方法についての補足。事前にメールとボックス両方からコードを実行できるようにしておく必要がある点に注意。 特にクリスタルは図鑑モード42hから実行しており、図鑑モード0Chには対応していない。図鑑モード42hのセットアップは以下の動画を参考に。 ポケモン第二世代任意コード実行講座 Part.04【VOICEROID紲星あかり】 - YouTube ボックス入力1 まずは、以下の内容をボックスに書き込む。これは直接実行するためのものではなく、育て屋と虫取り大会の領域にコピーして使うものとなる。 金銀1 へォ※ぞひ空ぐぎ グひ空ぐだグひ空 ぐずグひ空ぐビグ グペひ空ぐゼグひ 空ぐデグひ空ぐヅ ひパたちてャだド のョべだゼぼヂぐ ごョぶだガブのぼ ゅダペピアデの ※には適当な文字を入れておく。 ボックス入力後、以下のメールでコードを実行する。 ぼブグヅえりデの これにより、※の部分が「わたし」に書き換わる。 クリスタル1 へブ※ぞひ空ぐぎ グひ空ぐだグひ空 ぐずグひ空ぐビグ グペひ空ぐゼグひ 空ぐデグひ空ぐヅ ひパたちてャぞド のョべだゼぼヂぐ ごョぶだガブのぼ ゅダペピアデの ※には適当な文字を入れておく。 ボックス入力後、以下のメールでコードを実行する。 ぼヒグヅルろひでデの これにより、※の部分が「ばん どうろ」に書き換わる。 ボックスの入力が終わったら、今度はこのコードをコピーするメールを作成して実行する。 コピー用メール ボックス1~9の名前を(終端文字を抜いて)育て屋や虫取り大会の領域にコピーするコード 金銀 がりぜいヅガわョペゾゲへよだそひ ズゴぼギダすつぐまの クリスタル がろぜみひゼヅガわョぶペゾゲそひ へ/ぞズゴぼけすつジみの ボックス入力2 コピーが終わったら、今度はバイナリエディタのメインループ部分を作成する。 金銀2 ヅぬわがノぜゼプ ビヘぼまざョエ へぼまへガわョプ だ? ボックス2の末尾は空白でも何も入力しなくてもいい。 クリスタル2 へなづヅあめ空プ がなぜコビへガみ ざョエへガみプ へきんョだ? ボックス3の末尾は空白でも何も入力しなくてもいい。 バッグからの実行の場合、「へなづ」は不要? 不整合を防ぐために空白で埋めておくべきか。 ボックスの入力が終わったら、以下のメールを読んでからボックス実行する。 実行用メール(ただし実行はボックスから) ボックスだけでは足りない画面表示部のルーチンを最後に読んだメールに仕込むためのコード。 文頭に「の」が付いているため、メール実行では何も起こらない。 金銀 のののなぺゾ9ぼダメに0だガそひ よメづひだズはぐまちョのそぐー クリスタル のののなゾアぺぼダメに0だガそひ よメズづひだひピつゴみちョの ここまで正しくできていれば、このメールを読んでボックスからの実行を行うことで簡易型バイナリエディタが起動するはず。 指すアドレスの初期位置は金銀だとDCC7h、クリスタルではD2B1hからになる。 数値の対応表 数値(文字) バッグ 図鑑 A ■ g B ▲ 青色の線 C 携帯マーク 携帯マーク 操作方法 キー 操作 上 アドレスを-01h 下 アドレスを+01h 左 数値を-10h 右 数値を-01h B 数値を+10h A 数値を-01h START SERECT 簡易型バイナリエディタを終了 簡易型バイナリエディタが起動出来たら、wRAM内にバイナリエディタ本体のコードを書き込み、金銀では「てぬわ」、クリスタルでは「てあめ」でコードを実行することでバイナリエディタを起動できる。 …が、先に下記のメールを用意しておいた方がいいだろう。(入力中は戦闘を行わないこと!) バイナリエディタのコピー Teraman式での入力はwRAM内に直接書き込むが、書いている領域がクリスタルだとセーブされないという事情もあり、完成した時や入力を中断したいときはセーブデータ内に退避させておく必要がある。 そこで、wRAM→ボックス9へのコピー及びその逆を行うコードを用意しておく。動画では03h AA94hから書き込んでいるが、預け数が異常になってまともに見られなくなるので(他との記述を統一するためにも)03h AAB4hから書き込み始めることにしておく。 退避:wRAM→ボックス9(03h AAB4h) 金銀 ョぶぺぶぶヅえヲがわぜぬへマだ空 ゾパひァへよだてャだ クリスタル ョぶぶぺぶヅえヲがめぜあへマぞ空 ゾパひァへ/ぞてャぞ 復元:ボックス9(03h AAB4h)→wRAM 金銀 ョぶぺぶぶヅぬわがヲぜえへマだ空 ゾパひァへよだてャだ クリスタル ョぶぶぺぶヅあめがヲぜえへマぞ空 ゾパひァへ/ぞてャぞ 預け数を30匹にしておきたい場合(AAB3hにFFhも入れておく) 金銀 ぼギダヅナヲへマだぼグダデひひブ ョべデてャだ クリスタル ぼギダヅナヲへマぞぼグダデひひブ ョべデてャぞ 簡易型バイナリエディタ旧版(クリスタル専用) 今この方法をとる必要はない、旧時代の資料 導入準備 以下のメールを準備。 がりぜクごぺぽじごぺなむじごデざ ョべづぜクどたじじどの空空空だっ どうぐポケット1番目の個数をアドレス下位、2番目の個数をアドレス上位とし、3番目の個数をそのアドレスに書き込むコード。 書き込み後、道具ポケット3番目の個数を255個にし、次のアドレスを指すようにしているため連続で入力できる。 なお、最初に道具ポケット1~3番目の個数を255個にするには以下のコードを使用する。実行前に適当なアイテムを並べておくこと。 がりぜショべづざづざづの空空空空 空空空空空空空空空空空空空空だっ 簡易型バイナリエディタ 上記のコードを用いて以下のコードを書き込む。(長いので最後に) 「育て屋爺さんが預かっているポケモン」「育て屋婆さんが預かっているポケモン」「育て屋が預かっているタマゴの中身」「虫取り大会で捕まえたポケモン」 の領域に書き込んでいることに注意。特に育て屋の婆さんに関しては「話しかけたことがあるフラグ」の領域も使用しているため話しかけることすらしてはいけない。虫取り大会も参加するだけでアウト。 書き込み終わったら以下のコードで実行?(ボックス、メールどちらでもおk) がわひしョオぜマ ひすまてサん 画面表示 左から順に、 sRAMバンクナンバー(表記上は00h~ffhまでに見えるが、中身は00h~0fhをループしている。) 現在のアドレス 現在のアドレスの中身 書き込みモード時であることを示す表示、書き込みモード時以外は表示されないか黒い三角となる。 一度に1バイトずつしか表示されないのは上述のflag3式同様。 操作方法 通常モード キー 操作 上 アドレスを-01h 下 アドレスを+01h 左 アドレスを-10h 右 アドレスを+10h START sRAMバンクを+01h SERECT sRAMバンクを-01h A 書き込みモードに移行 B バイナリエディタを終了 書き込みモード キー 操作 上 数値を+01h 下 数値を-01h 左 数値を-10h 右 数値を+10h SERECT 数値を00hにする A 数値を書き込む B 書き込みをキャンセル 以降はこれを利用して上述の豪華版バイナリエディタをD2B1hから書き込む。 ちなみにこの簡易型バイナリエディタも最新版では導入方法が変わり、ボックスからデータをコピーする形で作成するようになった。 簡易型バイナリエディタ旧版本体 1番目個数 2番目個数 3番目個数 アドレス 値 138 222 205 DE8A CD 139 222 178 DE8B B2 140 222 15 DE8C 0F 141 222 6 DE8D 06 142 222 208 DE8E D0 143 222 87 DE8F 57 144 222 33 DE90 21 145 222 70 DE91 46 146 222 197 DE92 C5 147 222 122 DE93 7A 148 222 205 DE94 CD 149 222 157 DE95 9D 150 222 47 DE96 2F 151 222 205 DE97 CD 152 222 73 DE98 49 153 222 222 DE99 DE 154 222 35 DE9A 23 155 222 120 DE9B 78 156 222 205 DE9C CD 157 222 173 DE9D AD 158 222 222 DE9E DE 159 222 121 DE9F 79 160 222 205 DEA0 CD 161 222 173 DEA1 AD 162 222 222 DEA2 DE 163 222 35 DEA3 23 164 222 10 DEA4 0A 165 222 205 DEA5 CD 166 222 173 DEA6 AD 167 222 222 DEA7 DE 168 222 205 DEA8 CD 169 222 198 DEA9 C6 170 222 222 DEAA DE 171 222 24 DEAB 18 172 222 227 DEAC E3 173 222 197 DEAD C5 174 222 14 DEAE 0E 175 222 2 DEAF 02 176 222 71 DEB0 47 177 222 203 DEB1 CB 178 222 48 DEB2 30 179 222 62 DEB3 3E 180 222 15 DEB4 0F 181 222 24 DEB5 18 182 222 2 DEB6 02 1番目個数 2番目個数 3番目個数 アドレス 値 185 222 160 DEB9 A0 186 222 198 DEBA C6 187 222 246 DEBB F6 188 222 48 DEBC 30 189 222 2 DEBD 02 190 222 214 DEBE D6 191 222 160 DEBF A0 192 222 34 DEC0 22 193 222 13 DEC1 0D 194 222 32 DEC2 20 195 222 237 DEC3 ED 196 222 193 DEC4 C1 197 222 201 DEC5 C9 198 222 197 DEC6 C5 199 222 205 DEC7 CD 200 222 27 DEC8 1B 201 222 53 DEC9 35 202 222 193 DECA C1 203 222 203 DECB CB 204 222 127 DECC 7F 205 222 32 DECD 20 206 222 29 DECE 1D 207 222 203 DECF CB 208 222 119 DED0 77 209 222 32 DED1 20 210 222 27 DED2 1B 211 222 203 DED3 CB 212 222 111 DED4 6F 213 222 32 DED5 20 214 222 25 DED6 19 215 222 203 DED7 CB 216 222 103 DED8 67 217 222 32 DED9 20 218 222 23 DEDA 17 219 222 203 DEDB CB 220 222 95 DEDC 5F 221 222 32 DEDD 20 222 222 21 DEDE 15 223 222 203 DEDF CB 224 222 87 DEE0 57 225 222 32 DEE1 20 226 222 19 DEE2 13 227 222 203 DEE3 CB 228 222 79 DEE4 4F 229 222 32 DEE5 20 230 222 17 DEE6 11 231 222 203 DEE7 CB 232 222 71 DEE8 47 233 222 32 DEE9 20 234 222 17 DEEA 11 235 222 201 DEEB C9 236 222 11 DEEC 0B 237 222 201 DEED C9 238 222 3 DEEE 03 239 222 201 DEEF C9 240 222 5 DEF0 05 241 222 201 DEF1 C9 242 222 4 DEF2 04 243 222 201 DEF3 C9 244 222 20 DEF4 14 245 222 201 DEF5 C9 246 222 21 DEF6 15 247 222 201 DEF7 C9 248 222 241 DEF8 F1 249 222 195 DEF9 C3 250 222 173 DEFA AD 251 222 47 DEFB 2F 252 222 33 DEFC 21 253 222 80 DEFD 50 254 222 197 DEFE C5 255 222 62 DEFF 3E 0 223 236 DF00 EC 1 223 119 DF01 77 2 223 10 DF02 0A 3 223 95 DF03 5F 4 223 24 DF04 18 5 223 11 DF05 0B 1番目個数 2番目個数 3番目個数 アドレス 値 17 223 197 DF11 C5 18 223 205 DF12 CD 19 223 27 DF13 1B 20 223 53 DF14 35 21 223 193 DF15 C1 22 223 203 DF16 CB 23 223 127 DF17 7F 24 223 32 DF18 20 25 223 14 DF19 0E 26 223 203 DF1A CB 27 223 119 DF1B 77 28 223 32 DF1C 20 29 223 13 DF1D 0D 30 223 203 DF1E CB 31 223 71 DF1F 47 32 223 32 DF20 20 33 223 18 DF21 12 34 223 203 DF22 CB 35 223 79 DF23 4F 36 223 32 DF24 20 37 223 16 DF25 10 38 223 24 DF26 18 39 223 233 DF27 E9 40 223 29 DF28 1D 41 223 24 DF29 18 42 223 1 DF2A 01 43 223 28 DF2B 1C 44 223 123 DF2C 7B 45 223 46 DF2D 2E 46 223 78 DF2E 4E 47 223 205 DF2F CD 48 223 173 DF30 AD 49 223 222 DF31 DE 50 223 24 DF32 18 51 223 221 DF33 DD 52 223 123 DF34 7B 53 223 2 DF35 02 54 223 62 DF36 3E 55 223 237 DF37 ED 56 223 119 DF38 77 57 223 201 DF39 C9 10進数版データの作成に、れんだ様の固定長配列ビューアを使用しました。
https://w.atwiki.jp/pokemonbug/pages/26.html
メモリエディタ、RAMエディタとも。 RAMを自由自在に編集できるプログラム。任意コード実行の最高到達点の一つ。 これがあればもはや書き換え系のコードをいちいち作成する必要性がなくなり、任意コード実行用のプログラムの書き込みも非常に容易になる。 思わぬ範囲まで効果が及ぶ可能性があるので危険が伴います。実験・使用・使用後のセーブには充分注意しましょう。 特にsRAMバンク01h(A000h~BFFFh)は下手に弄ると簡単にフアイルのデータが壊れます。(一応対策はされました) このページで扱うバイナリエディタにはROMバンクやSRAMバンクの切り替え機能があります。 これらの機能が不要な場合、未使用領域を使ったバージョンが公開されているのでそちらを使うことをお勧めします。 →未使用領域型バイナリエディタ 参考資料 ポケモン赤緑で簡易版バイナリエディタを作ったお話 バイナリエディタの作成に便利な簡易型バイナリエディタの解説 【初代ポケモン】お手軽20分。バイナリエディタ作成チャート解説【バグ技 任意コード実行】 - YouTube ニューゲーム(要データクリア)からバイナリエディタを作成するまでのチャート紹介および実践動画。 このページで紹介する簡易型バイナリエディタは動画と操作方法が少し違うことに注意。 バイナリエディタ導入チャート ピカチュウ版 ピカチュウ版でニューゲームからバイナリエディタを作成するまでのチャート。(※レポートバグ使用) このページで紹介するものとはコードの組み方が違う点に注意。 バイナリエディタ導入 森地図チャート ピカチュウ版 こちらはレポートバグ無し。トキワのもりでfifth法を利用する必要あり。 バイナリエディタ導入 毒サファリ・いあいぎりルート ピカチュウ版 既存データをそのまま流用できるバイナリエディタ導入チャート 導入 バージョンによってサブルーチンの位置が簿妙に違うため、コードを変える必要がある。 簡易型バイナリエディタ 引用 memory_editor.asm · GitHub 下記のコードをボックスの1番目から並べ、 サファリボール0個 今回の実行では育て屋フラグを利用するため、この場所は何もしないようにするのが確実。 D983 00[nop] 「あなぬけのヒモ」や「あなをほる」を使うと、サファリボールが0個になる。 この仕様自体に使用する場所は関係ないので、適当なダンジョンで使用しておけば準備完了となる。 育て屋に「ゃわてょん」を預けた状態にする。 これはbcレジスタにDCE0hを代入しつつボックス22匹目のニックネームに飛ぶ命令となる。 D984 01 E0 DC[ld bc,DEC0] D987 C3 E2 DE[jp DEE2] 「ゃわてEん」の場合はボックス1匹目のニックネームに直接飛ぶ。作り方は5かいバグのページを参考に。 の条件を満たしたうえでなかよしバッヂを使用する。3匹目のニックネームがバージョンによって異なるため注意。 なお、足りない部分を補完するため実行時にボックスのポケモンの名前が少し変わるようになっている。 2回目以降は気にせず実行しておk。 ピカチュウ版ではなかよしバッヂの代わりにかいがらバッヂを使用する。 その仕様上、預けるポケモンの数および種類にも指定がある。 コード用以外の余計なポケモンは預けない。(しっかり22匹で止める) 24匹だと余計なジャンプで暴走し、26匹だと予期せぬ場所が書き換えられて困る。 一応30匹にしてもいいが修正が面倒になる。 1~17匹目にコラッタ(A5h)またはポッポ(24h)。 必ずしもこの2種でなければならないわけではないが、1番道路で適当に乱獲すればいいので楽。 18匹目にメノクラゲ(18h)「へみんちレ」。 これは適当に21番水道などで手に入れればいい。 19匹目にウツボット(BEh)「ぼダメギて」。 ウツドンは12~15番道路に出現する(マダツボミも即進化可能)ため、これをリーフのいしで進化させればいい。 20~22匹目はニックネームさえ合えば何でもいい。 メノクラゲ→ウツボット(18 BE ; jr BE)で育て屋預けフラグまで飛び(pcをD9C6h→D984hに)、 預けフラグ(01h)と「ゃわ」(E0h DCh)でbcレジスタにDCE0を代入(01 E0 DC ; ld bc,DCE0)、 「てょん」(C3 E2 DE ; jp DEE2)で22匹目のニックネームまで飛び、「だア」(30 80 ; jr nc,80)で1匹目のニックネームに飛ぶ(pcをDEE4h→DE64hに)ようにしている。 はやぶさバッヂ使用ルートは初期・後期で微妙に手順が異なってくるためここでは触れないことにする。(はやぶさバッヂ使用チャートの動画やブログは多い) ボックス内コード がんぜルョ よヂづよく づよむづな 赤緑初期では「づよそづな」(む→そ)※67→79 青では「づよワづな」(む→ワ)※67→8F ピカチュウ初期(Ver.1.0)では「づにグづな」(よむ→にグ)※67→3F ピカチュウ後期(Ver.1.1~)では「づにゲづな」(よむ→にゲ)※67→40 ゅョダだグ ぼヂてソん ダだギムツ てソんダム キづごヅー ぱへにんぴ へにんボぷ へにんへ※5、6文字目は冒頭のコードで「Hね゜」書き換えられる。※「H」(67h)は赤緑後期の場合。 ううゾダグ※1文字目は冒頭のコードで「円」に書き換えられる。 ダめいんど ダれチんダ めしんざダ れゃわダリ だいなひだ へみんちレ ぼダメギて よザれんん よメボデの だアの※「てょん」で飛んでくる先。ここから相対ジャンプでボックス1匹目のニックネームに飛ぶ。 操作方法 簡易型バイナリエディタでは、アドレスとその値が表示される。 「ゃわ」でDCE0h(ボックス24番目のすばやさ努力値下桁)を指定するので初期状態のアドレス表示はDCE0と表示されているはず。 なお、「ゃわ」の部分を変えることで開始位置を変えることもできる。(例:「たむてょん」を預ければ手持ち4匹目のHP努力値上桁から開始できる) あくまで育て屋に預けている状態である必要がある点には注意。 A 指すアドレスを+1h 数値を入力したらAで進めていくことになる。 B 指すアドレスを-1h 下 指しているアドレスの値を+1h 上 指しているアドレスの値を-1h 右 指しているアドレスの値を+10h 左 指しているアドレスの値を-10h SELECT アドレスDCE0hからプログラム実行。バイナリエディタが完成してから行うこと。 START 簡易型バイナリエディタを終了。長いコードを打ち込むので、セーブしながら進めるのが吉。 始点はDCE0hで固定されている点に注意。 おまけ1:バイナリエディタリセット バイナリエディタを1から書き直す場合、元の数値が残っていると入力ミスの元になることも考えられる。 そこで、簡易型バイナリエディタで実行できるリセットコードを作成してみた。 DCEBh~DDA0hの0フィル アドレス 値 ニモニック 備考 DCE0 21 ld hl,DCEB コード部分を残す必要があるので、コードの先を指定。 DCE1 EB DCE2 DC DCE3 06 ld b,B6 B6h(182)バイトの繰り返し DCE4 B6 DCE5 AF xor a aレジスタを00hにする。 DCE6 22 ldi (hl),a これでDA00hまでを00hで埋めていく。 DCE7 05 dec b bレジスタの値を1減らす。 DCE8 20 jr nz,FC bレジスタが00hになるまで DCE9 FC DCEA C9 ret コード終了。ここから下を書き換えていく。 バイナリエディタ作成 簡易版バイナリエディタができたら、それを使ってDCE0から以下の数値を書き込んでいく。 DD24h、DD73h、DD74hに書き込む値がバージョンによって異なる点に注意。 なお、このバイナリエディタはボックス24~30番目のポケモンのステータスを使用している。 引用:memory_editor_rom.asm · GitHub ※ROMバンク切り替え機能なし版:memory_editor.asm · GitHub 2024/5/7更新!SELECT+Aでの実行時、hlレジスタを変更するとフリーズする問題の対策をしました。 DD47を43→6F(DD46hのCBhと合わせてbit 0,eをbit 5,aに変更)に変えてください。(導入済みの場合は、3E 6F EA 47 DD C9 [ld a,6F→ld (DD47),a→ret]でも直せます) バイナリエディタ本体 アドレス 値 DCE0 21 DCE1 00 DCE2 D0 DCE3 CD DCE4 23 DCE5 DD DCE6 E5 DCE7 11 DCE8 F8 DCE9 FF DCEA 19 DCEB E5 DCEC D1 DCED 21 DCEE A9 DCEF C3 DCF0 CD DCF1 8E DCF2 DD DCF3 CD DCF4 7D DCF5 DD DCF6 01 DCF7 0C DCF8 00 DCF9 36 DCFA 7C DCFB 23 DCFC 7A DCFD CD DCFE 7D DCFF DD DD00 7B DD01 CD DD02 7D DD03 DD DD04 36 DD05 7F DD06 23 DD07 1A DD08 CD DD09 7D DD0A DD DD0B 13 DD0C 36 DD0D 7C DD0E 09 DD0F 7C DD10 FE DD11 C5 DD12 20 DD13 E5 DD14 3E DD15 ED DD16 EA DD17 4B DD18 C4 DD19 AF DD1A EA DD1B 00 DD1C 60 DD1D EA DD1E 00 DD1F 00 DD20 E1 DD21 18 DD22 C0 DD23 CD DD24 赤緑初期:79 赤緑後期:67 青:8F ピカ初期:3F ピカ後期:40 DD25 38 DD26 F0 DD27 B3 DD28 01 DD29 01 DD2A 00 DD2B 07 DD2C 38 DD2D 14 DD2E 0B DD2F 0B DD30 07 DD31 38 DD32 0F DD33 0E DD34 F0 DD35 07 DD36 38 DD37 0A DD38 01 DD39 10 DD3A 00 DD3B 07 DD3C 38 DD3D 04 DD3E 48 DD3F 07 DD40 38 DD41 09 DD42 CB DD43 53 DD44 28 DD45 0D DD46 CB DD47 6F DD48 28 DD49 03 DD4A E9 DD4B E1 DD4C C9 DD4D F0 DD4E B8 DD4F 81 DD50 E0 DD51 B8 DD52 C9 DD53 79 DD54 CB DD55 43 DD56 20 DD57 06 DD58 CB DD59 4B DD5A 20 DD5B 1E DD5C 09 DD5D C9 DD5E A7 DD5F C8 DD60 F5 DD61 CD DD62 8E DD63 DD DD64 F1 DD65 86 DD66 77 DD67 E5 DD68 F0 DD69 B8 DD6A F5 DD6B 3E DD6C 1C DD6D E0 DD6E B8 DD6F EA DD70 00 DD71 20 DD72 CD DD73 赤緑:69 青:59 ピカ初期:B4 ピカ後期:BF DD74 赤緑青:7C ピカチュウ:77 DD75 F1 DD76 E0 DD77 B8 DD78 E1 DD79 C9 DD7A 84 DD7B 67 DD7C C9 DD7D F5 DD7E CB DD7F 37 DD80 CD DD81 84 DD82 DD DD83 F1 DD84 E6 DD85 0F DD86 C6 DD87 F6 DD88 30 DD89 02 DD8A C6 DD8B 60 DD8C 22 DD8D C9 DD8E 3E DD8F 01 DD90 EA DD91 00 DD92 60 DD93 3E DD94 0A DD95 EA DD96 00 DD97 00 DD98 F0 DD99 B8 DD9A EA DD9B 00 DD9C 20 DD9D EA DD9E 00 DD9F 40 DDA0 C9 実行と仕上げ 打ち込みに成功していれば、簡易版バイナリエディタでSTARTを押すとバイナリエディタが起動する。 始点はDCE2とDCE1で設定されている。(デフォルトはD000h) ROMバンクとsRAMバンクは同時に変更される。(初期値は03h) 操作方法 キー 操作 上 アドレスを-01h 下 アドレスを+01h 左 アドレスを-10h 右 アドレスを+10h B+上 アドレスを-100h B+下 アドレスを+100h B+左 アドレスを-1000h B+右 アドレスを+1000h SELECT+上 バンクを+01h SELECT+下 バンクを-01h SELECT+左 バンクを-10h SELECT+右 バンクを+10h SELECT+A カーソル位置のプログラム実行 A+下 数値を+01h A+上 数値を-01h A+左 数値を-10h A+右 数値を+10h START バイナリエディタを終了 おまけ2:バイナリエディタを他ボックスにコピー DA00hから実行するような巨大なコードを複数保存したい場合、バイナリエディタごと他のボックスにコピーするのが有効。バックアップという点でも重要。 手順 コピー先のボックスに一度切り替える。(念のため) 未使用のボックスの場合、初めて切り替えた時に初期化処理が行われるため。 コピー元のボックスに切り替える。 バイナリエディタを起動し、アドレスD51Fhの値をコピー先のボックスに合わせて書き換える。 1:80 / 2:81 / 3:82 / 4:83 / 5:84 / 6:85 / 7:86 / 8:87 上桁の8は初期化済みを示すもので、下桁はボックスの番号より1少なくなると覚えておけばいい。 書き換えたら、現在ボックスがコピー先のボックスになっているので、コピー元のボックスにもう一度切り替える。 ここを間違えると逆にコッピ―元のボックスが消えるので注意。 コピー元のボックスでバイナリエディタを起動し、アドレスD2B9hの値を1Eに書き換える。 これで、コピー元のボックスのボールマークが復活する。 バイナリエディタを直接起動できるようにする 動作確認ができたら、バイナリエディタを直接起動できるようにすると便利。 また、ボックスの中身が変わるとバイナリエディタが崩壊するので、D9B2hを1Eに書き換えてポケモンを追加できないようにしておくと安心。 赤緑青の場合 育て屋に預けるポケモンを「パパてゃわ」に変えることで、サファリボールや育て屋の状態にかかわらずバイナリエディタを直接起動できるようになる。 具体的にはD985h~を以下のように書き換える。 名前変更 アドレス 値 文字 D985 40 パ D986 40 パ D987 C3 て D988 E0 ゃ D999 DC わ ピカチュウの場合 D9B2h~を以下のように書き換える。 書き換え箇所 アドレス 値 備考 D9B2 1E 30匹預けていることにして崩壊防止 D9B3 A5 ここは即値(ld a,xxの「xx」)として使うため元のままでいい。 ポッポの場合は24になっているが変更する必要はない。 D9B3 C3 以下3匹は(見た目だけ)バグポケモン(ここは「アム゛」)になるので強さを見るのは避ける。 D9B4 E0 ポケスタで見ると中身の種族に見えてしまうが、 ボックスの中身を弄らなければ書き換えられることはない。 D9B5 DC 「ゃパ」というバグポケモンだったり ピカチュウバージョンではかいがらバッヂを手に入れる過程で道具周りのデータを破損させたりするため、そちらのリカバリーも行うこと。 例:毒サファリいあいぎりルートの場合はD4B9hを32に戻したり、D525hを1足しておく。 おまけ3:ROMバンクの切り替え法(バンク切り替え機能がある場合は不要) アドレス4000h~7FFFhにはROMデータの一部が格納されている。 バイナリエディタを起動した時点のROMバンクは03hになっているが、ROMバンク自体は01h~1Fhまで存在する(殿堂入りのプログラムはバンク1Chに入っている) ROMバンクを切り替えてデータを見たい場合は2000hとFFB8hに書き換えたいバンクの番号を入れる必要がある。 バイナリエディタ上で適当な場所(D000hでも一応おk)に以下のコードを書き込み、コードの先頭にカーソルを合わせてSELECTを押すと、指定したバンクの4000hからデータを見ることができる。 コード例 数値 ニモニック 備考 3E ld a,xx xx 即値 切り替えたいバンクの番号を入れる EA ld (2000),a 2000hにバンク番号を代入 00 即値 20 即値 E0 ld (FF00+B8),a FFB8hにバンク番号を代入 B8 即値 21 ld hl,4000 00 即値 この数値を変えることでバイナリエディタの始点を変えられる 40 即値 C9 ret 処理を終了してバイナリエディタに戻る おまけ4:パソコン型バイナリエディタ ※過去の遺物。(ピカチュウ版では応用できるかもしれないが) これを導入すると育て屋が使えなくなるため、現在ではイベントフラグの未使用領域(セーブもされる)を利用したバイナリエディタの導入を推奨。 →未使用領域型バイナリエディタ こちらならパソコンを解放でき、書き込み箇所もまとまっているので簡易型バイナリエディタで導入できる。 今回作成したバイナリエディタはボックスのポケモン内に本体があるため、ボックスを切り替えて実行するようなことができない。 そこで、育て屋の領域とパソコンの道具を使うことでボックスの領域を自由に使えるようにするバイナリエディタも開発されている。 打ち込みはバイナリエディタで行うといいだろう。※容量が足りないため、ROMバンクの切り替え機能は入っていない。 参考:memory_editor_stored_item.asm · GitHub ※下記のコードはパソコンのデータを3バイトずらしていることに注意。変更点を緑字強調で示す。 育て屋データ アドレス 値 ニモニック 備考 D983 00 nop 1Eh(サファリボール30個)でも一応問題はない D984 00 nop 01h以上にするとD99Fh~D9A1h(経験値)が歩行で変化してしまう。 D985 21 ld hl,D000 開始アドレス設定 ピカ版の場合はここに飛ぶようにすればいい(「てカる」に対応) D986 00 ニックネーム:あ゛[無効]みへはや D987 D0 D988 CD call D4CA ※パソコン内に飛ぶ D989 CA D98A D4 D98B E5 push hl 親名:゛ヅ29パポケモン D98C 11 ld de,FFF8 D98D F8 D98E FF D98F 19 add hl,de D990 54 ld d,h D991 5D ld e,l 種族:シードラ D992 21 ld hl,C3AB 現在HP:8619 D993 AB D994 C3 引き取りレベル:195(預けた状態にできない理由でもある) D995 36 ld (hl),7C 左側の枠線を描画する部分 D996 7C タイプ1(謎) D997 23 inc hl タイプ2も存在しないタイプ D998 7A ld a,d ちからのねっこを持っていることになる…らしい D999 CD call D50A パソコンに飛ぶ D99A 0A わざマシン05、ひっかく D99B D5 わざマシン13 D99C 7B ld a,e スモッグ D99D CD call D50A 再びパソコンへ D99E 0A ID:52490 D99F D5 ここから経験値 D9A0 36 ld (hl),7F アドレスと数値の間のスペースを描画する部分 D9A1 7F D9A2 23 inc hl ここから努力値 D9A3 1A ld a(de) D9A4 CD call D50A D9A5 0A D9A6 D5 D9A7 36 ld (hl),7C 右側の枠線を描画する部分 D9A8 7C D9A9 01 ld bc,000C D9AA 0C D9AB 00 ここまで努力値 D9AC 09 add hl,bc AB個体値 D9AD 13 inc de SC個体値 D9AE 7D ld a,l ここから技PP D9AF C3 jp D4BC パソコン2番目の種類に飛ぶ D9B0 BC 参考元のコードではD4B9hで預け数に飛んでいる D9B1 D4 この先はボックスのデータ。結構ギリギリ。 パソコンデータ アドレス 値 ニモニック 備考 D4B9 31 道具49種類でできるため、預け数もそれに合わせておく。 D4BA FF 先頭にやめるを設置。 D4BB 63 特に理由もなく99個。一応やめるも引き出せてしまうので… D4BC FE cp a,13 D4BD 13 D4BE C2 jp nz,D995 左枠線描画部 D4BF 95 D4C0 D9 D4C1 3E ld a,ED D4C2 ED D4C3 EA ld (C44B),a カーソルを描画する部分 D4C4 4B D4C5 C4 D4C6 E1 pop hl D4C7 C3 jp D988 育て屋に飛ぶ D4C8 88 D4C9 D9 D4CA CD call 38※ D4CB 赤緑初期:79 赤緑後期:67 青:8F ピカ初期:3F ピカ後期:40 ※バージョンによってサブルーチンの位置が違うため、 この部分を変える必要がある。 参考元ではD4C8hであることに注意。 D4CC 38 D4CD F0 ld a,(FFB3) 入力検知部 D4CE B3 D4CF 07 rlca D4D0 30 jr nc,04 D4D6hに飛ぶことになる D4D1 04 D4D2 3E ld a,01 D4D3 01 D4D4 18 jr 1C D4F2hに飛ぶことになる。 D4D5 1C D4D6 07 rlca D4D7 30 jr nc,03 D4DChに飛ぶことになる。 D4D8 03 D4D9 9F sbc a D4DA 18 jr 16 D4F2に飛ぶことになる。 D4DB 16 D4DC 07 rlca D4DD 30 jr nc,04 D4E3hに飛ぶことになる。 D4DE 04 D4DF 3E ld a,F0 D4E0 F0 D4E1 18 jr 0F D4F2hに飛ぶことになる。 D4E2 0F D4E3 07 rlca D4E4 30 jr nc,04 D4EAhに飛ぶことになる。 D4E5 04 D4E6 3E ld a,10 D4D7 10 D4E8 18 jr 08 D4F2hに飛ぶことになる。 D4E9 08 D4EA 07 rlca D4EB 30 jr nc,02 D4EEhに飛ぶことになる。 D4EC 02 D4ED E1 pop hl D4EE C9 ret D4EF 07 rlca D4F0 D0 ret nc D4F1 E9 jp hl D4F2 CB bit 0,e D4F3 43 D4F4 28 jr z,03 D4F9hに飛ぶことになる。 D4F5 03 D4F6 86 add (hl) D4F7 77 ld (hl),a 指しているアドレスの値増減処理 D4F8 C9 ret D4F9 CB bit 1,e D4FA 4B D4FB 28 jr z,03 D500hに飛ぶことになる。 D4FC 03 D4FD 84 add h D4FE 67 ld h,a 指すアドレス上桁の増減処理 D4FF C9 ret D500 06 ld b,00 D501 00 D502 CB bit 7,a D503 7F D504 28 jr z,01 D507hに飛ぶことになる。 D505 01 D506 05 dec b D507 4F ld c,a D508 09 add,hl,bc 指すアドレス下桁の増減処理 D509 C9 ret D50A 47 ld b,a D50B CB swap a D50C 37 D50D CD call D511 D50E 11 パソコン内なのでずれを考慮 D50F D5 D510 78 ld a,b D511 E6 and a,0F D512 0F D513 C6 add a,F6 D514 F6 D515 30 jr nc,02 D519hに飛ぶことになる。 D516 02 D517 C6 add a,60 D518 60 D519 22 ldi (hl),a D51A C9 ret